// pages/spac_lgbf/spac_lgbf.js


Page({

    data: {
        dayTG: "",
        dayDZ: '',
        HourDZTime: '',
        hourDZ: '',
        LiuZhu: '',
        KaiXue: '',
        PeiXue: '',
        dateObject: []
    },

    bindTimeChange: function (e) {
        // 灵龟八法的算法
        const ganArr = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
        const zhiArr = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
        const now = new Date();
        const year = now.getFullYear();
        const month = now.getMonth() + 1;
        const day = now.getDate();
        const offset = 10;
        const yearTG = ganArr[(year - 4) % 10]; // 计算年的天干
        const yearDZ = zhiArr[(year - 4) % 12]; // 计算年的地支

        console.log('picker发送选择改变，携带值为', e.detail.value)
        let time = e.detail.value
        let splitTime = time.split(':'); // 使用冒号分割时间字符串
        let hour = Number(splitTime[0]);
        let min = splitTime[1];
        console.log('hour,min', hour, min);

        // 将时间存入dateObject数组
        const dateObject = {
            "year": year,
            "month": month < 10 ? '0' + month : month,
            "day": day < 10 ? '0' + day : day,
            "hour": hour,
            "minute": min,
        };

        // 日的天干地支
        let dayTG, dayDZ
        const jdz = new Date('1900/01/01');
        const offsetMs = now - jdz;
        const offsetDay = Math.floor(offsetMs / 86400000); // 计算与1900年1月1日相差的天数
        dayTG = ganArr[(offsetDay + offset) % 10];
        dayDZ = zhiArr[(offsetDay + 10) % 12];

        // 时-地支
        const hourDZ = zhiArr[Math.floor(((hour + 1) % 24) / 2)];
        // 时-天干
        const hoursTGTable = [
            { hourDZ: "子", 甲: "甲", 己: "甲", 乙: "丙", 庚: "丙", 丙: "戊", 辛: "戊", 丁: "庚", 壬: "庚", 戊: "壬", 癸: "壬" },
            { hourDZ: "丑", 甲: "乙", 己: "乙", 乙: "丁", 庚: "丁", 丙: "己", 辛: "己", 丁: "辛", 壬: "辛", 戊: "癸", 癸: "癸" },
            { hourDZ: "寅", 甲: "丙", 己: "丙", 乙: "戊", 庚: "戊", 丙: "庚", 辛: "庚", 丁: "壬", 壬: "壬", 戊: "甲", 癸: "甲" },
            { hourDZ: "卯", 甲: "丁", 己: "丁", 乙: "己", 庚: "己", 丙: "辛", 辛: "辛", 丁: "癸", 壬: "癸", 戊: "乙", 癸: "乙" },
            { hourDZ: "辰", 甲: "戊", 己: "戊", 乙: "庚", 庚: "庚", 丙: "壬", 辛: "壬", 丁: "甲", 壬: "甲", 戊: "丙", 癸: "丙" },
            { hourDZ: "巳", 甲: "己", 己: "己", 乙: "辛", 庚: "辛", 丙: "癸", 辛: "癸", 丁: "乙", 壬: "乙", 戊: "丁", 癸: "丁" },
            { hourDZ: "午", 甲: "庚", 己: "庚", 乙: "壬", 庚: "壬", 丙: "甲", 辛: "甲", 丁: "丙", 壬: "丙", 戊: "戊", 癸: "戊" },
            { hourDZ: "未", 甲: "辛", 己: "辛", 乙: "癸", 庚: "癸", 丙: "乙", 辛: "乙", 丁: "丁", 壬: "丁", 戊: "己", 癸: "己" },
            { hourDZ: "申", 甲: "壬", 己: "壬", 乙: "甲", 庚: "甲", 丙: "丙", 辛: "丙", 丁: "戊", 壬: "戊", 戊: "庚", 癸: "庚" },
            { hourDZ: "酉", 甲: "癸", 己: "癸", 乙: "乙", 庚: "乙", 丙: "丁", 辛: "丁", 丁: "己", 壬: "己", 戊: "辛", 癸: "辛" },
            { hourDZ: "戌", 甲: "甲", 己: "甲", 乙: "丙", 庚: "丙", 丙: "戊", 辛: "戊", 丁: "庚", 壬: "庚", 戊: "壬", 癸: "壬" },
            { hourDZ: "亥", 甲: "乙", 己: "乙", 乙: "丁", 庚: "丁", 丙: "己", 辛: "己", 丁: "辛", 壬: "辛", 戊: "癸", 癸: "癸" }
        ]
        const hourTG = hoursTGTable.find(hour => hour.hourDZ === hourDZ)[dayTG];

        // 打印出年日时的天干地支
        console.log(`${yearTG}${yearDZ}年 ${dayTG}${dayDZ}日 ${hourTG}${hourDZ}时`);

        // 小时的地支对应时间、流注在哪条经上
        const Hour_LZ_table = {
            '子': '胆经', '丑': '肝经', '寅': '肺经', '卯': '大肠经', '辰': '胃经', '巳': '脾经', '午': '心经', '未': '小肠经', '申': '膀胱经', '酉': '肾经', '戌': '心包经', '亥': '三焦经'
        };
        const Hour_time_table = {
            '子': '23:00-1:00', '丑': '1:00-3:00', '寅': '3:00-5:00', '卯': '5:00-7:00', '辰': '7:00-9:00', '巳': '9:00-11:00', '午': '11:00-13:00', '未': '13:00-15:00', '申': '15:00-17:00', '酉': '17:00-19:00', '戌': '19:00-21:00', '亥': '21:00-23:00'
        };
        const LiuZhu = Hour_LZ_table[hourDZ];
        const HourDZTime = Hour_time_table[hourDZ];

        // 定义 日干、日支、时干、时支 表
        const dayTGTable = { "甲": 10, "己": 10, "乙": 9, "丙": 7, "庚": 9, "丁": 8, "辛": 7, "壬": 8, "戊": 7, "癸": 7 };
        const dayDZTable = { "丑": 10, "寅": 8, "辰": 10, "戌": 10, "子": 7, "酉": 9, "未": 10, "申": 9, "卯": 8, "巳": 7, "午": 7, "亥": 7 };
        const hourTGTable = { "甲": 9, "己": 9, "乙": 8, "丙": 7, "庚": 8, "壬": 6, "辛": 7, "丁": 6, "戊": 5, "癸": 5 };
        const hourDZTable = { "酉": 6, "未": 8, "子": 9, "申": 7, "午": 9, "丑": 8, "辰": 5, "寅": 7, "卯": 6, "戌": 5, "巳": 4, "亥": 4 };

        // 判断阳日还是阴日
        const YangDay = ["甲", "丙", "戊", "庚", "壬"];
        const isYangDay = YangDay.includes(dayTG);
        const chuShu = isYangDay ? 9 : 6;

        // 计算余数
        let yuShu = (dayTGTable[dayTG] + dayDZTable[dayDZ] + hourTGTable[hourTG] + hourDZTable[hourDZ]) % chuShu;
        setTimeout(() => {
            if (yuShu === 0) {
                yuShu = chuShu === 9 ? 9 : 6;
            }
            // console.log('yuShu=', yuShu);

            // 开穴
            const KXTable = { "申脉": 1, "照海": 2, "外关": 3, "足临泣": 4, "男-1照海、2列缺, 女-1内关、2公孙": 5, "公孙": 6, "后溪": 7, "内关": 8, "列缺": 9 };
            let KaiXue = Object.keys(KXTable).find(key => KXTable[key] === yuShu);
            // 配穴
            const PXMap = new Map([
                ["足临泣", "外关"],
                ["外关", "足临泣"],
                ["后溪", "申脉"],
                ["申脉", "后溪"],
                ["公孙", "内关"],
                ["内关", "公孙"],
                ["列缺", "照海"],
                ["照海", "列缺"],
                ["男-1照海、2列缺, 女-1内关、2公孙", ""],
            ]);
            const PeiXue = PXMap.get(KaiXue);

            console.log('KaiXue=', KaiXue);
            console.log('PeiXue=', PeiXue);
            console.log('LiuZhu=', LiuZhu);
            console.log('HourDZTime=', HourDZTime);
            console.log('dateObject=', dateObject);

            this.setData({
                dayTG,
                dayDZ,
                HourDZTime,
                hourDZ,
                LiuZhu,
                KaiXue,
                PeiXue,
                dateObject,
            })
        }, 0);
    },

    // 在某个页面中返回上一页
    navigateBack() {
        wx.navigateBack({
            delta: 1 // 返回的页面数，如果是1，则表示返回上一页
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // console.log(options);
        let spac_detail = wx.getStorageSync('spAcList')
        let SpAcKey = options.SpAcKey

        // 找到对应的元素
        var item = spac_detail.find(function (item) {
            return item.acotherstitle === SpAcKey;
        });

        // 灵龟八法的算法
        const ganArr = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
        const zhiArr = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
        const now = new Date();
        const year = now.getFullYear();
        const month = now.getMonth() + 1;
        const day = now.getDate();
        const hour = now.getHours();
        const minute = now.getMinutes();
        const offset = 10;
        const yearTG = ganArr[(year - 4) % 10]; // 计算年的天干
        const yearDZ = zhiArr[(year - 4) % 12]; // 计算年的地支

        // 将时间存入Date数组
        const dateObject = {
            "year": year,
            "month": month < 10 ? '0' + month : month,
            "day": day < 10 ? '0' + day : day,
            "hour": hour < 10 ? '0' + hour : hour,
            "minute": minute < 10 ? '0' + minute : minute,
        };

        // 日的天干地支
        let dayTG, dayDZ
        const jdz = new Date('1900/01/01');
        const offsetMs = now - jdz;
        const offsetDay = Math.floor(offsetMs / 86400000); // 计算与1900年1月1日相差的天数
        dayTG = ganArr[(offsetDay + offset) % 10];
        dayDZ = zhiArr[(offsetDay + 10) % 12];

        // 时-地支
        const hourDZ = zhiArr[Math.floor(((hour + 1) % 24) / 2)];
        // 时-天干
        const hoursTGTable = [
            { hourDZ: "子", 甲: "甲", 己: "甲", 乙: "丙", 庚: "丙", 丙: "戊", 辛: "戊", 丁: "庚", 壬: "庚", 戊: "壬", 癸: "壬" },
            { hourDZ: "丑", 甲: "乙", 己: "乙", 乙: "丁", 庚: "丁", 丙: "己", 辛: "己", 丁: "辛", 壬: "辛", 戊: "癸", 癸: "癸" },
            { hourDZ: "寅", 甲: "丙", 己: "丙", 乙: "戊", 庚: "戊", 丙: "庚", 辛: "庚", 丁: "壬", 壬: "壬", 戊: "甲", 癸: "甲" },
            { hourDZ: "卯", 甲: "丁", 己: "丁", 乙: "己", 庚: "己", 丙: "辛", 辛: "辛", 丁: "癸", 壬: "癸", 戊: "乙", 癸: "乙" },
            { hourDZ: "辰", 甲: "戊", 己: "戊", 乙: "庚", 庚: "庚", 丙: "壬", 辛: "壬", 丁: "甲", 壬: "甲", 戊: "丙", 癸: "丙" },
            { hourDZ: "巳", 甲: "己", 己: "己", 乙: "辛", 庚: "辛", 丙: "癸", 辛: "癸", 丁: "乙", 壬: "乙", 戊: "丁", 癸: "丁" },
            { hourDZ: "午", 甲: "庚", 己: "庚", 乙: "壬", 庚: "壬", 丙: "甲", 辛: "甲", 丁: "丙", 壬: "丙", 戊: "戊", 癸: "戊" },
            { hourDZ: "未", 甲: "辛", 己: "辛", 乙: "癸", 庚: "癸", 丙: "乙", 辛: "乙", 丁: "丁", 壬: "丁", 戊: "己", 癸: "己" },
            { hourDZ: "申", 甲: "壬", 己: "壬", 乙: "甲", 庚: "甲", 丙: "丙", 辛: "丙", 丁: "戊", 壬: "戊", 戊: "庚", 癸: "庚" },
            { hourDZ: "酉", 甲: "癸", 己: "癸", 乙: "乙", 庚: "乙", 丙: "丁", 辛: "丁", 丁: "己", 壬: "己", 戊: "辛", 癸: "辛" },
            { hourDZ: "戌", 甲: "甲", 己: "甲", 乙: "丙", 庚: "丙", 丙: "戊", 辛: "戊", 丁: "庚", 壬: "庚", 戊: "壬", 癸: "壬" },
            { hourDZ: "亥", 甲: "乙", 己: "乙", 乙: "丁", 庚: "丁", 丙: "己", 辛: "己", 丁: "辛", 壬: "辛", 戊: "癸", 癸: "癸" }
        ]
        const hourTG = hoursTGTable.find(hour => hour.hourDZ === hourDZ)[dayTG];

        // 打印出年日时的天干地支
        console.log(`${yearTG}${yearDZ}年 ${dayTG}${dayDZ}日 ${hourTG}${hourDZ}时`);

        // 小时的地支对应时间、流注在哪条经上
        const Hour_LZ_table = {
            '子': '胆经', '丑': '肝经', '寅': '肺经', '卯': '大肠经', '辰': '胃经', '巳': '脾经', '午': '心经', '未': '小肠经', '申': '膀胱经', '酉': '肾经', '戌': '心包经', '亥': '三焦经'
        };
        const Hour_time_table = {
            '子': '23:00-1:00', '丑': '1:00-3:00', '寅': '3:00-5:00', '卯': '5:00-7:00', '辰': '7:00-9:00', '巳': '9:00-11:00', '午': '11:00-13:00', '未': '13:00-15:00', '申': '15:00-17:00', '酉': '17:00-19:00', '戌': '19:00-21:00', '亥': '21:00-23:00'
        };
        const LiuZhu = Hour_LZ_table[hourDZ];
        const HourDZTime = Hour_time_table[hourDZ];

        // 定义 日干、日支、时干、时支 表
        const dayTGTable = { "甲": 10, "己": 10, "乙": 9, "丙": 7, "庚": 9, "丁": 8, "辛": 7, "壬": 8, "戊": 7, "癸": 7 };
        const dayDZTable = { "丑": 10, "寅": 8, "辰": 10, "戌": 10, "子": 7, "酉": 9, "未": 10, "申": 9, "卯": 8, "巳": 7, "午": 7, "亥": 7 };
        const hourTGTable = { "甲": 9, "己": 9, "乙": 8, "丙": 7, "庚": 8, "壬": 6, "辛": 7, "丁": 6, "戊": 5, "癸": 5 };
        const hourDZTable = { "酉": 6, "未": 8, "子": 9, "申": 7, "午": 9, "丑": 8, "辰": 5, "寅": 7, "卯": 6, "戌": 5, "巳": 4, "亥": 4 };

        // 判断阳日还是阴日
        const YangDay = ["甲", "丙", "戊", "庚", "壬"];
        const isYangDay = YangDay.includes(dayTG);
        const chuShu = isYangDay ? 9 : 6;

        // 计算余数
        let yuShu = (dayTGTable[dayTG] + dayDZTable[dayDZ] + hourTGTable[hourTG] + hourDZTable[hourDZ]) % chuShu;
        setTimeout(() => {
            if (yuShu === 0) {
                yuShu = chuShu === 9 ? 9 : 6;
            }
            // console.log('yuShu=', yuShu);

            // 开穴
            const KXTable = { "申脉": 1, "照海": 2, "外关": 3, "足临泣": 4, "男子取照海|女子取内关": 5, "公孙": 6, "后溪": 7, "内关": 8, "列缺": 9 };
            let KaiXue = Object.keys(KXTable).find(key => KXTable[key] === yuShu);
            // 配穴
            const PXMap = new Map([
                ["足临泣", "外关"],
                ["后溪", "申脉"],
                ["公孙", "内关"],
                ["列缺", "男子取照海|女子取内关"],
                ["照海", "列缺"],

            ]);
            const PeiXue = PXMap.get(KaiXue);

            console.log('KaiXue=', KaiXue);
            console.log('PeiXue=', PeiXue);
            console.log('LiuZhu=', LiuZhu);
            console.log('HourDZTime=', HourDZTime);
            console.log('dateObject=', dateObject);

            this.setData({
                dayTG,
                dayDZ,
                HourDZTime,
                hourDZ,
                LiuZhu,
                KaiXue,
                PeiXue,
                dateObject,
                item
            })
        }, 0);

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})